The present invention relates to computing devices. More specifically, the present invention relates to the evaluation of an application's performance.
Reliable application performance evaluation is important in any application's instrumentation subsystem. Without continuous performance metrics available, troubleshooting certain types of problems is becoming increasingly difficult, which may result in negative user experience and/or application unavailability.
One of the challenges related to evaluation an application's performance is a requirement that the action for measuring performance no affect overall system performance. There are currently multiple approaches to determining an application's performance, ranging from internal diagnostic stopwatch statements in code to 3rd party services that evaluate user experience performance based on geographical location. Example approaches are:
User-based logging—all calls for given user (or set of users) are recorded. This approach provides a good picture of performance of selected set of users, but does not give a sufficient picture for the entire user base.
Across the board logging—all the calls are logged. Due to the impact on system performance, and a very large volume of data logged, this type of logging is forced to be turned off and, generally, only enabled for a short time for troubleshooting a particular problem.
‘Black box logging’—usually a 3rd party service that is replicating live user behavior using a scripting mechanism. While providing a good picture from the prospective of a given user, it does not give an insight to the detailed performance of internal classes/component and across the user base due to vast differences in workflows. Additionally, presence of other factors, such as network latency reduces credibility of such measurements.
Therefore, there exists a need for an improved method and system for evaluating an application's performance. This and other needs are addressed by one or more aspects of the present invention.